#ifndef CFILTERDATA_H
#define CFILTERDATA_H

#include <QSortFilterProxyModel>
#include <QDebug>
#include "cvagasmodel.h"

class CFilterData : public QSortFilterProxyModel
{
    Q_OBJECT

    Q_PROPERTY(int totalItens READ getTotalItens NOTIFY totalItensChanged)
    Q_PROPERTY(bool filtroAtivo READ getFiltroAtivo NOTIFY filtroAtivoChanged)

public:
    explicit CFilterData(QObject *parent = 0);
    void setModelo(CVagasModel *modelo);
    Q_INVOKABLE void Filtrar(const QVariantList &filtros);
    Q_INVOKABLE void RemoverFiltros();
    Q_INVOKABLE void FiltrarVagasContatadas(bool filtrar);
    Q_INVOKABLE void FiltrarVagasMarcadas(bool filtrar);
    Q_INVOKABLE void FiltrarVagasNovas(bool filtrar);

    int getTotalItens();
    bool getFiltroAtivo();
signals:
    void totalItensChanged();
    void filtroAtivoChanged();

private:
    QVariantList _filtros;
    bool _filtrarContatadas, _filtrarMarcadas, _filtrarNovas;

    bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const;

private slots:
    void houveAlteracaoNoModelo();
};

inline int CFilterData::getTotalItens() { return rowCount(QModelIndex()); }
inline bool CFilterData::getFiltroAtivo() { return _filtros.count() > 0; }

#endif // CFILTERDATA_H
